# -*- coding: utf-8 -*-
# 获取相关搜索内容
import random
import time
from threading import Thread
from queue import Queue
import requests
from lxml import etree
import cssselect
import requests
import logging
log = logging.basicConfig(level=logging.NOTSET)

def check_proxy():
    """第二种："""
    try:

        proxy = get_proxy().get("proxy")
        proxies = {
            'http': 'http://' + proxy,
            'https': 'https://' + proxy,

        }
        print(proxy)
        res = requests.get(url="http://httpbin.org/get", timeout=2, proxies=proxies)
        proxyIP = res.text
        print(proxyIP)
        if (proxyIP in proxy):
            print("代理IP:'" + proxyIP + "'有效！")
            return True
        else:
            print("2代理IP无效！")
            return False
    except:
        print("1代理IP无效！")
        return False


def get_proxy():
    return requests.get("http://127.0.0.1:5000/get/").json()

def delete_proxy(proxy):
    requests.get("http://127.0.0.1:5000/delete/?proxy={}".format(proxy))
HEADERS = [
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
    'Mozilla/5.0 (Windows;U;WindowsNT6.1;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50',
    'Mozilla/5.0 (Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1',
    'Mozilla/5.0 (Windows NT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1',
    'Mozilla/5.0 (Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0',
    'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
    'Mozilla/5.0 (Macintosh;U;IntelMacOSX10_6_8;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586',
    'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.27 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/601.1.27',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0',
    'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',
]

COOKIES = [
    r'BIDUPSID=B11DC34F571F93B83C40F78363D3577E; PSTM=1588473840; BAIDUID=B11DC34F571F93B8FE95481858135E16:FG=1; BD_UPN=12314353; BDUSS=WYtWn5LaEhSTWFlRUVvQ21OUjUyOHA3TFJvclV5eX5EN35HVWZGcS1BTmlvdGxlRVFBQUFBJCQAAAAAAAAAAAEAAAAuJLwU0uTT6tGp9q32rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGIVsl5iFbJeR; H_WISE_SIDS=146748_143879_145945_146170_145498_147001_146538_145838_131247_144682_137746_144742_144250_146575_140259_127969_146548_146458_146750_147024_146732_146785_131423_146802_144658_142208_146001_146900_107314_146847_146136_139910_146824_140367_144966_145608_139883_146728_147204_146046_145397_143856_139914_110085; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; ispeed_lsm=2; SIGNIN_UC=70a2711cf1d3d9b1a82d2f87d633bd8a03413289766; delPer=0; BD_CK_SAM=1; PSINO=7; BD_HOME=1; sugstore=0; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_PSSID=31619_1451_21113_31069_31660_31782_31321_30823_26350_22159; H_PS_645EC=554dqK8iNHLvBj7yfbW%2F8F0HvIJ6mwiPR3C1yh3NoVXfmKQxJm8nOlAGBxMJJQARLqjS; BDSVRTM=110',
    r'BAIDUID=16189268A7CCFB29696209538CC20C49:FG=1; PSTM=1562828745; BIDUPSID=6BD5CC05C058022DF6CB672F03EE98F5; NOJS=1; BDUSS=jAzblU5NDFPd2I4WWcxbFVFdmNpZ3FWallqNn5JelFXZzJoU0psd2djSFZLaTFlRVFBQUFBJCQAAAAAAAAAAAEAAAAuJLwU0uTT6tGp9q32rQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANWdBV7VnQVeS; H_WISE_SIDS=141182_100806_137933_139405_128063_135846_141003_125695_139148_120197_138471_140853_141345_140334_138878_137985_140174_131247_132551_137745_118893_118858_118855_118818_118803_138165_138883_140260_141210_141368_140267_139057_140202_140592_136863_138585_139171_139626_140077_140113_136196_133847_140793_134256_131423_140311_136537_136752_110085_140325_127969_140954_140593_140864_139802_139886_139408_127416_138313_138426_141194_138942_140682_141191_140597_140962; BD_UPN=12314353; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; delPer=0; BD_CK_SAM=1; BD_HOME=1; SIGNIN_UC=70a2711cf1d3d9b1a82d2f87d633bd8a03355511966; uc_login_unique=57281200cd279fe37dccf1aaaf53a9bf; uc_recom_mark=cmVjb21tYXJrXzIxMTc5OTM2; BDRCVFR[SHOOb3ODEBt]=mk3SLVN4HKm; PSINO=6; H_PS_PSSID=1455_31117_21110_30840_31186_30903_30823_31085_26350_31196; COOKIE_SESSION=5_0_9_7_14_21_0_3_9_5_10_0_6062261_0_0_0_1585553495_0_1585553495%7C9%230_0_1585553495%7C1; BDRCVFR[feWj1Vr5u3D]=mk3SLVN4HKm; sugstore=0; H_PS_645EC=8c3edffvokmV8%2FS70gaxw3ocsQMKVbZPdigyICwpqEwt6tARKxpYQ2sa3tj0fpRtW91R',
    r'BAIDUID=A55D609BF6D2BFC9D55001A0665B012A:FG=1; BIDUPSID=A55D609BF6D2BFC9D55001A0665B012A; PSTM=1565409473; H_WISE_SIDS=130611_137735_132923_128699_136650_135964_136630_132549_134982_126062_136436_137157_120154_137001_133981_136365_132910_136455_137691_135846_131246_137743_132378_136680_118896_118873_118852_118820_118805_136687_107315_132783_136799_136430_136095_133351_137901_137221_136861_129656_136196_137104_133847_132552_137467_134046_129643_131423_137466_136740_110085_137863_127969_137625_136612_135416_128196_137695_136635_137096_137208_134383_136413_137450_136988; BDUSS=3RpVXhIbktSdGdmbUJjZnRiazJEVEppTjlPcHdUak1JYjFDT3ladH5xamZjZmxkRVFBQUFBJCQAAAAAAAAAAAEAAAB4NA4naGFpc2hlbmc5OQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN~k0V3f5NFdZ; uc_login_unique=85d11417a5dfe306fc2a2f3b2eb9828d; uc_recom_mark=cmVjb21tYXJrXzI4MDAyOTQ5; SIGNIN_UC=70a2711cf1d3d9b1a82d2f87d633bd8a03357167400; BDRCVFR[tFA6N9pQGI3]=mk3SLVN4HKm; H_PS_PSSID=; delPer=0; PSINO=3; BDORZ=FFFB88E999055A3F8A630C64834BD6D0',
]



class Baiduxg(Thread):
    def __init__(self, link, queue,searchWord):
        super().__init__()
        self.sameTime = 0
        self.queue = queue  # 队列初始化
        self.link = link  # 默认链接初始化
        self.wd = searchWord  # 默认链接初始化
        self.headers = {
            'User-Agent': random.choice(HEADERS),
            'Cookie': random.choice(COOKIES),
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Cache-Control': 'max-age=0',
            'Referer': 'https://www.baidu.com',
        }
        self.params = {
            'kw': searchWord
        }

    def run(self):
        while True:
            try:
                # time.sleep(3)
                link = self.queue.get()
                Rqnum = 0
                YZnum = 0
                while True:
                    html = self.parse_html(link,self.params)
                    if html == None:
                        Rqnum =Rqnum +1
                        print(f"5次请求失败，正在切换代理ip尝试第{Rqnum}次尝试")
                        time.sleep(3)
                    elif '验证' in html:
                        YZnum = YZnum + 1
                        # print(html)
                        time.sleep(3)
                        print(f"该ip出现验证码，切换ip第{YZnum}次尝试")
                    else:

                        baidu_FindWord = self.get_text(html)
                        if searchWord in baidu_FindWord:
                            self.sameTime =self.sameTime +1
                        break
            finally:
                self.queue.task_done()

    @staticmethod
    def get_text(html):
        # print(html)
        doc = etree.HTML(html)  # 获取文档树
        # print(doc)

        # relate_search = doc.xpath('//div[@id="rs"]/div/table/tr/th/a/text()')
        # print(relate_search)


        main1 = doc.xpath('//em/text()')
        print(main1)
        # print("".join(main1))
        baidu_FindWord = "".join(main1)
        return baidu_FindWord

        # rs > div > table > tbody > tr:nth-child(1) > th:nth-child(3) > a
        # tt  = doc.cssselect('#rs > div > table > tr > th > a ')
        # for t in tt:
        #     print(t.text)

    def parse_html(self, links,params):
        retry_count = 5
        proxy = get_proxy().get("proxy")
        proxies = {
            'http': 'http://' + proxy,
            'https': 'https://' + proxy,
        }
        while retry_count > 0:
            try:
                # 使用代理访问
                r = requests.get(links, headers=self.headers,params=params, timeout=3,proxies=proxies,verify= False)
                print(f'使用代理--{proxy}')

            except requests.RequestException as err:  #如果请求异常，说明ip废了
                print(err)
                retry_count -= 1
            else:   #如果请求无异常，就返回html代码，要么是正常的页面，要么是验证页面，判断None
                print('无异常')
                r.encoding = 'utf-8'
                html = r.text
                return html
        delete_proxy(proxy)  #运行到这里说明5次请求都失败了
        return None





if __name__ == '__main__':
    query = Queue(1)
        # searchWord = '人生'
        # url = f"http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd={searchWord}&fenlei=256&oq=seo&rsv_pq=f910f0f3000fe857&rsv_t=acc3RUQCtu%2FSTxgtcqyM53NKwxbU6Yjah7Ar4s4JFsZQDXG5Tg0PCrpAozI&rqlang=cn&rsv_dl=tb&rsv_enter=0&rsv_btype=t&usm=3&rsv_idx=2&rsv_page=1"
        # query.put(url)
        # xg = Baiduxg(url, query)
        # xg.daemon = True
        # xg.start()
        # query.join()
    wordList = ['这才是我2021开年最想看到的电影', '原创 岛赏小队 电影岛赏 ', '功能介绍 一个关于电影能坚持说真话的地方', '2021-01-12原文', '唯有影梦满银河', '前段时间刷微博，一抹可爱的粉色推送出现在我眼前，当我点开它的时候，发现它的头像居然是一条萌萌的、毛茸茸的龙！它叫做“许愿神龙”，这是我与“神龙”的第一次见面，虽然只是匆匆一面，但可爱的神龙形象已经我心中留下了深刻的印象', '作为2021开年上映的合家欢动画电影，欢乐轻松的题材与画风，注定使《许愿神龙》成为近期与家人朋友一起去电影院的首选', '看完《许愿神龙》后，我最直接的感受就是四个字：超出预期', '本以为会是一部低幼向的动画，没想到对全年龄向的观众都十分友好，全场的成年观众也都看得津津有味，称得上是老少咸宜', '这可能和每个人的心中都有美好的心愿有关吧', '无论年龄大小，无论层次高低，大家对于美好生活的愿望都是共通的，而自带好运属性的神龙则可以帮他们达成', '步入新年，见龙有喜，看了这部电影，我觉得是为新的一年开端讨了一个好彩头', '这条“许愿神龙”不仅在电影中十分抢手，在国内院线的点映情况也十分火爆', '影片刚刚经过两轮点映，第一轮为元旦3天假期，第二轮为1月9日、10日早十点至晚八点，目前影片的点映票房已破千万，猫眼点映开分9.1，获得了看过观众的一致认可，观众们在影院里经久不绝的笑声已经证明了这部电影的价值', '这么好的影片，桃花岛观影团的线下活动自然不能缺席', '1月9日、1月10日连续两天，我们在北京和上海举办了《许愿神龙》三场超前观影，还专门设计了“女生专场”和“上海特色专场”的主题', '观影团的观众有序取票、文明观影，在电影院里一起和这条古灵精怪的神龙度过了一个难忘的下午', '在北京场的映后，我们还请到了两条威“萌”无比的神龙与观众互动，充满活力的小姐姐和萌娃们纷纷和神龙合照、抱抱，希望能够在它身上沾一沾好运的喜气', '桃花岛观影团的观众还自发地写下了许多珍贵的评论，全力为这部佳作打call', '这部电影用明亮的色彩呈现了一个靓丽的世界，其中美好的情感非常治愈', '当我们为了自己美好的心愿而努力的样子被别人记住的时候，也是对他人的一种治愈，哪怕只是一个小小的、跟想见的人一起吃一顿饭这样的心愿，也值得被善待', '电影中为了自己小小愿望不断努力的男主角思齐，是我们所有人的缩影', '他在外面念书工作，他的妈妈在家为他做着世界上最好喝的汤；他为了童年玩伴放弃了浮华利欲，神龙也为了朋友做出了影响一生的决定……这种生活中平淡却深刻的亲情和友情是最动人的，正是这种“小爱”汇聚成了人间大爱，这是世界上最大的宝石和最高的权力都换不来的东西', '看完这部电影以后，我相信它能让快节奏生活中的年轻人们感到放松，也能给我们带来生活的信心', '当映后大银幕上古灵精怪毛茸茸、可爱萌萌的神龙出现在现场的时候，我突然想抱抱它，岛主给了我这个机会，我整个人都被那个拥抱充满了电量', '粉红色顺滑的皮毛，太好撸了！而且它在电影里不但是个大吃货，还是个表面傲娇、心里柔软的大可爱，怪不得影厅里的小姐姐们都想人手拥有一条神龙呢！', '《许愿神龙》中的男主角思齐和我们大多数人一样，努力工作，平平凡凡，善良真诚', '他在电影中被神龙治愈，而我们在匆匆忙忙的人生轨迹中，也需要停下脚步来歇一歇，需要这样的电影来慰藉我们', '它的剧情虽然简单，但是不做作、不煽情、不说教，踏踏实实地讲好了一个故事，真诚动人', '有桃花岛在上海的影迷说，《许愿神龙》影片中的上海元素运用的特别契合，尤其是上海大妈的形象，挑剔但又不失可爱，又有着一手好厨艺', '而影片里的上海老市民的邻里关系和家庭生活状态都刻画得恰到好处，上海的馄饨汤包、弄堂里充满烟火气的生活、浦东和浦西的发展变化、送外卖、卖红薯、广场舞等各种元素都十分接地气', '神龙的形态也是变化莫测——儿童画、风筝、舞龙舞狮等等，还有很多好玩的梗，是只有看了电影才能get到的，这是创作团队国际化视野和质感的体现', '同时影片云集了众多精英，为这部电影带来了更多惊喜', '比如我们很熟悉的成龙大哥，我很小的时候，就看了很多成龙大哥的动作电影，包括动画片《成龙历险记》，我相信那是很多人的童年回忆', '而在这部《许愿神龙》中，我惊喜地发现了它对成龙动作电影的致敬，那些经典的武打动作和场面被高度还原，再加上成龙大哥精彩的配音，让喜爱成龙电影的人找到了某些随着时间流逝而被慢慢遗忘的电影情怀，牛骏峰和薇薇的配音也是为影片增添了更多的青春活力', '他们与创作者一道，为全世界宣传了中国文化，也递出了极具特色的中国名片', '《许愿神龙》电影中最珍贵的东西，也是我们现实中最珍贵的东西——情感', '普世情感和人间大爱是一个永恒命题，我们的生活和电影都一直在对它进行解读，而更重要的是珍惜和拥抱它', '从现在开始，拥抱每一份真挚的感情，拥抱每一部走心的电影', '2020年已经过去，就对着神龙，许下一个愿望，抱一抱它，让阴霾一扫而光吧', '电影岛赏读者群正式上线\n他是传奇最好的代名词\n用8年的时间，看懂一部电影', '还可以在这些平台找到我', '因为你的分享、点赞、在看', '我足足的精气神儿！']
    sameList =[]
    for wordItem in wordList:
        # time.sleep(3)
        searchWord = f'{wordItem}'
        print('searchWord----',searchWord)
        # url = f"https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd={searchWord}&fenlei=256&oq=seo&rsv_pq=f910f0f3000fe857&rsv_t=acc3RUQCtu%2FSTxgtcqyM53NKwxbU6Yjah7Ar4s4JFsZQDXG5Tg0PCrpAozI&rqlang=cn&rsv_dl=tb&rsv_enter=0&rsv_btype=t"
        url = f"https://www.baidu.com/s?wd={searchWord}&pn=1&oq=百度搜索验证机制&ie=utf-8&fenlei=256&rsv_idx=1&rsv_page=1"

        query.put(url)
        # print(url)
        xg = Baiduxg(url, query,searchWord)
        xg.daemon = True
        xg.start()
        query.join()
        print(xg.sameTime)
        sameList.append(xg.sameTime)
        print(123)
    print(sameList)

    check_proxy()